package cn.iocoder.yudao.module.call.controller.admin.listenaction.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.util.*;
import java.util.*;

import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

import com.alibaba.excel.annotation.*;

import javax.validation.constraints.NotEmpty;

@Schema(description = "管理后台 - 外呼任务动作绑定 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ListenActionRespVO {

    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4933")
    @ExcelProperty("编号")
    private Long id;

    @Schema(description = "来源", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("来源")
    private String source;

    @Schema(description = "来源id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8184")
    @ExcelProperty("来源id")
    private Long sourceId;

    @Schema(description = "监听事件", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("监听事件")
    private String listen;

    @Schema(description = "执行动作", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("执行动作")
    private String action;

    @Schema(description = "参数信息", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "参数信息不能为空")
    private String listenParams;

    @Schema(description = "参数信息", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "参数信息不能为空")
    private String actionParams;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "是否有效", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer status;

    @Schema(description = "监听事件描述", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("监听事件描述")
    private String listenDescribes;

    @Schema(description = "执行动作描述", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("执行动作描述")
    private String actionDescribes;

    @Schema(description = "参数信息", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "参数信息不能为空")
    private List<Map<Object, Object>> listenParamsDescribes;

    @Schema(description = "参数信息", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "参数信息不能为空")
    private List<Map<Object, Object>> actionParamsDescribes;

}